In numerous embodiment methods such as these have been known for many years and require no further explanation.
A system in which particularly large amounts of data have to be recorded, buffer-stored and are transferred within short time periods is a programmable unit such as a microprocessor, a microcontroller or a signal processor, which has debug resources by means of which trace information can be output, which is used to monitor the processes taking place within the programmable unit.
The debug resources which are contained in programmable units include, for example, so-called on-chip debug support modules or OCDS modules.
These and other debug resources allow the occurrences of states or events (which can be predetermined from outside the programmable unit) to be monitored within the programmable unit, and allow actions which can be predetermined from outside the programmable unit to be carried out or to be initiated when such a state or such an event has occurred.
The states or events whose occurrence can be monitored by the debug resources may, for example but by no means exclusively, comprise:                access by the programmable unit or by specific components of it to specific memory addresses or registers and/or        the transfer of specific data within the programmable unit, and/or        the state of the instruction pointer.        
The actions which the debug resources carry out or initiate on the occurrence of a state or event such as this or of some other state or event may, for example likewise not exclusively, comprise:                signalling of the fact that the condition to be monitored has occurred to a device which is provided outside the programmable unit,        reading or editing of the content of specific memory elements or registers,        outputting of trace information, that is to say outputting addresses, data and/or control signals which has or have been transferred or used within the programmable unit, to a device which is provided outside the programmable unit,        stopping the running of the program,        continuing the running of the program in the so-called single step mode, or        the CPU in the programmable unit carrying out routines which are used for debugging or emulation of the programmable unit.        
The data which is output by the debug resources is output to the external device which predetermines the states and/or events to be monitored by the debug resources and predetermines the actions to be carried out by the debug resources. The external device can use the data supplied to it from the debug resources to trace the processes taking place within the programmable unit and thus to localize faults which have occurred within the programmable unit.
The trace information, which has already been mentioned above and which can be output by the debug resources is of particular interest in this case. The trace information comprises addresses, data and/or control signals which is or are transferred or used on each occurrence of the states and/or events to be monitored or within a certain time before and/or after the occurrence of the states and/or events to be monitored within the programmable unit.
The basic design or that part of a programmable unit which is responsible for the recording, buffer storage and outputting of the trace information is illustrated in FIG. 1.
The arrangement shown in FIG. 1 includes n first buffer stores ZS1-1 to ZS1-n, a control device C which controls the buffer stores ZS1-1 to ZS1-n, and a second buffer store ZS2 which is connected downstream from the first buffer stores ZS1-1 to ZS1-n.
The first buffer stores ZS1-1 to ZS1-n are connected via lines ADS to the devices in the programmable unit which produce, transfer or use the trace information which can be output. The connection is made in such a way that each of the first buffer stores ZS1-1 to ZS1-n is supplied with a quite specific portion of the trace information which can be output, for example:                the buffer store ZS1-1 is supplied with the addresses which are transmitted via a bus which connects the components of the programmable unit to one another,        the buffer store ZS1-2 is supplied with the data which is transmitted via the bus which connects the components of the programmable unit to one another,        the buffer store ZS1-3 is supplied with the control signals which are transferred between the components in the programmable unit, and        the buffer store ZS1-n is supplied with the respective current count of the program counter.        
For the sake of completeness, it should be noted that any desired number of first buffer stores may be provided, and in that each buffer store may be supplied with any desired addresses, data and/or control signals.
The control device C is supplied with various addresses, data, control signals, register contents, memory contents, etc. which occur within the programmable unit. The data which is supplied to the control device C may comprise entirely or partially the data which is also supplied to the first buffer stores ZS1-1 to ZS1-n; or alternatively or additionally, this data may, however, also comprise other data or further data. The control device C checks whether the data supplied to it satisfies one or more specific conditions and, by appropriately driving the first buffer stores ZS1-1 to ZS1-n, causes the data supplied to these buffer stores to be stored when one or more of the conditions to be monitored is or are satisfied, with the condition or conditions which is or are satisfied determining whether and if appropriate which first buffer stores ZS1-1 to ZS1-n will store the data supplied to them. In this case, by way of example, it is possible to provide:                for only the buffer store ZS1-1 to store the data supplied to it when a first condition is satisfied,        for the buffer store ZS1-1 and the buffer store ZS1-2 to store the data supplied to them when a second condition is satisfied,        for all of the buffer stores ZS1-1 to ZS1-n to store the data supplied to them when a first condition is satisfied and a third condition is then satisfied, and/or        for none of the buffer stores ZS1-1 to ZS1-n to store the data supplied to them when a first condition and a fourth condition are satisfied at the same time.        
The control device C can furthermore also be used to define which addresses, data and/or control signals is or are supplied to the buffer stores ZS1-1 to ZS1-n. For this purpose, the buffer stores ZS1-1 to ZS1-n in FIG. 1 may be preceded by selection devices which are not shown, are controlled by the control device C and in each case always transfer, from a large amount of data which is supplied to them, only a portion of this data, predetermined by the control device C, to the respective buffer stores ZS1-1 to ZS1-n.
In the example under consideration, the buffers stores ZS1-1 to ZS1-n are FIFOs with a relatively small storage capacity. The data which is stored in the buffer stores ZS1-1 to ZS1-n is transferred continuously to the buffer store SZ2, which in the example under consideration is formed by a larger RAM. The data which is stored in the RAM is—if appropriate after the data has been compressed (for example by means of a NEXUS module according to the Standard entitled “The Nexus 5001 Forum Standard for a Global Embedded Processor Debug Interface” defined by the IEEE Industry Standards and Technology, Standards and Technology Organization (IEEE-ISTO) in 1999)— output immediately or later from the programmable unit to the external device. This output data is the trace information which has already been mentioned above.
The external device can use the trace information supplied to it to trace the processes taking place within the programmable unit.
In order to allow the external device to reconstruct the processes taking place within the programmable unit, it obviously also requires information about the sequence and/or the times of recording of the data supplied to it. The external device can determine this information relatively easily itself if the NEXUS module, as already mentioned above, or the like is used for outputting the trace information from the programmable unit. The NEXUS module compresses the data to be output, this reducing the amount of data to be output, and the data can be output immediately after it is recorded, that is to say effectively in real time, from the programmable unit. This makes it possible for the external device to use the sequence and the times of reception of the data supplied to it to determine the information which it requires relating to the sequence and times of recording of the data supplied to it.
This way of determining the additional information required by the external device leads to incorrect results, particularly when the programmable unit outputs so much trace information in a short time that the information can no longer be output in real time.
This in turn means that the external device cannot reconstruct, or no longer accurately reconstruct, the processes taking place within the programmable unit.